From 8b7452953297cfbe27a87d3504433dfd2cc22121 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Tue, 5 Feb 2008 09:36:48 -0700 Subject: [PATCH] [IA64] Fix maximum_gpfn hypercall HVM livemigation fails without this patch. according to x86 side: http://xenbits.xensource.com/xen-unstable.hg?rev/55d0a5c70986 Signed-off-by: Kouya Shimura --- tools/libxc/ia64/xc_ia64_linux_save.c | 2 +- xen/arch/ia64/xen/domain.c | 4 ++-- xen/arch/ia64/xen/mm.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/libxc/ia64/xc_ia64_linux_save.c b/tools/libxc/ia64/xc_ia64_linux_save.c index 007da95d10..0430a5173a 100644 --- a/tools/libxc/ia64/xc_ia64_linux_save.c +++ b/tools/libxc/ia64/xc_ia64_linux_save.c @@ -485,7 +485,7 @@ xc_domain_save(int xc_handle, int io_fd, uint32_t dom, uint32_t max_iters, goto out; } - p2m_size = xc_memory_op(xc_handle, XENMEM_maximum_gpfn, &dom); + p2m_size = xc_memory_op(xc_handle, XENMEM_maximum_gpfn, &dom) + 1; /* This is expected by xm restore. */ if (write_exact(io_fd, &p2m_size, sizeof(unsigned long))) { diff --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c index 9e636638f3..17375693dd 100644 --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -1768,8 +1768,8 @@ int shadow_mode_control(struct domain *d, xen_domctl_shadow_op_t *sc) atomic64_set(&d->arch.shadow_dirty_count, 0); d->arch.shadow_bitmap_size = - ((d->arch.convmem_end >> PAGE_SHIFT) + - BITS_PER_LONG - 1) & ~(BITS_PER_LONG - 1); + (domain_get_maximum_gpfn(d) + BITS_PER_LONG) & + ~(BITS_PER_LONG - 1); d->arch.shadow_bitmap = xmalloc_array(unsigned long, d->arch.shadow_bitmap_size / BITS_PER_LONG); if (d->arch.shadow_bitmap == NULL) { diff --git a/xen/arch/ia64/xen/mm.c b/xen/arch/ia64/xen/mm.c index 782d12ae97..b984ad44c7 100644 --- a/xen/arch/ia64/xen/mm.c +++ b/xen/arch/ia64/xen/mm.c @@ -430,7 +430,7 @@ mm_final_teardown(struct domain* d) unsigned long domain_get_maximum_gpfn(struct domain *d) { - return (d->arch.convmem_end + PAGE_SIZE - 1) >> PAGE_SHIFT; + return (d->arch.convmem_end - 1) >> PAGE_SHIFT; } // stolen from share_xen_page_with_guest() in xen/arch/x86/mm.c -- 2.30.2